<template>
  <!-- 修改订单状态   -->
  <el-dialog append-to-body title="修改订单" :visible.sync="updateOrderStatusDialog" width="500px" :before-close="close">
    <el-form ref="formRef" :model="form" :rules="rules">
      <el-form-item label="订单编号">
        {{ form.orderId }}
      </el-form-item>
      <el-form-item label="订单状态" prop="push_status">
        <el-select v-model="form.push_status" placeholder="选择订单状态">
          <el-option-group
            v-for="group in orderStatusOptions"
            :key="group.label"
            :label="group.label"
          >
            <el-option v-for="(item,index) in group.options" :key="index" :disabled="item.disabled" :label="item.label" :value="item.value1" />
          </el-option-group>
        </el-select>
      </el-form-item>

      <!--   已发货，填写快递单号 物流信息   -->

      <template v-if="form.push_status === '已发货'">
        <el-form-item label="物流公司" prop="express_name">
          <el-select v-model="form.express_name" placeholder="请选择物流公司">
            <el-option
              v-for="group in express_options"
              :key="group.express_name"
              :label="group.express_name"
              :value="group.express_name"
            />
          </el-select>
        </el-form-item>
        <el-form-item label="物流单号" prop="express_no">
          <el-input v-model="form.express_no" style="width: 194px;" placeholder="请输入物流单号" />
        </el-form-item>
      </template>

      <el-form-item v-if="showBySelectStatus" label="通知下游">
        <el-radio v-model="callback" :label="true">通知</el-radio>
        <el-radio v-model="callback" :label="false">不通知</el-radio>
      </el-form-item>
    </el-form>
    <div slot="footer" class="dialog-footer">
      <el-button type="primary" :loading="btnClickLoading" @click="updateOrderStatus">
        <span v-if="!btnClickLoading">确 定</span>
        <span v-else>正在修改</span>
      </el-button>
    </div>
  </el-dialog>

</template>
<style>
.demo-table-expand {
  font-size: 0;
}

.demo-table-expand label {
  width: 40%;
}

.demo-table-expand .el-form-item {
  margin-right: 0;
  margin-bottom: 0;
  width: 50%;
}

.el-dialog:not(.is-fullscreen) {
  margin-top: 6vh !important;
  margin-bottom: 6vh !important;
}
</style>
<script>
import { modifyOrder } from '@/api/externalGoods'

export default {
  name: 'UpdateOrderStatus',
  props: {
    form: {
      type: Object,
      default() {
        return {}
      }
    },
    updateOrderStatusDialog: {
      type: Boolean
    },
    title: {
      type: String,
      default: '修改订单'
    }
  },
  data() {
    return {
      express_options: [
        { 'express_name': '货拉拉物流', 'express_code': 'huolalawuliu' },
        { 'express_name': '韵达国际', 'express_code': 'YDGJ' },
        { 'express_name': '速腾快递', 'express_code': 'suteng' },
        { 'express_name': '巨邦物流', 'express_code': 'JB' },
        { 'express_name': '三志物流', 'express_code': 'SANZHI' },
        { 'express_name': '环海快运', 'express_code': 'hkglobalsea' },
        { 'express_name': '中环国际快递', 'express_code': 'CHSZHONGHUANGUOJI' },
        { 'express_name': '速邮达', 'express_code': 'suyoda' },
        { 'express_name': '一号云配', 'express_code': 'YHYP' },
        { 'express_name': '京广速递', 'express_code': 'JGSD' },
        { 'express_name': 'EMS', 'express_code': 'EMS' },
        { 'express_name': '圆通速递', 'express_code': 'YTO' },
        { 'express_name': '中通快递', 'express_code': 'ZTO' },
        { 'express_name': '韵达速递', 'express_code': 'YD' },
        { 'express_name': '顺丰速运', 'express_code': 'SF' },
        { 'express_name': '百世快递', 'express_code': 'HTKY' },
        { 'express_name': '申通快递', 'express_code': 'STO' },
        { 'express_name': '邮政快递包裹', 'express_code': 'YZPY' },
        { 'express_name': '优速快递', 'express_code': 'UC' },
        { 'express_name': '天天快递', 'express_code': 'HHTT' },
        { 'express_name': '全峰快递', 'express_code': 'quanfengkuaidi' },
        { 'express_name': '国际物流', 'express_code': 'guoji' },
        { 'express_name': '快捷速递', 'express_code': 'kuaijiesudi' },
        { 'express_name': '八达通', 'express_code': 'BDT' },
        { 'express_name': '品骏快递', 'express_code': 'PJ' },
        { 'express_name': '德邦快递', 'express_code': 'DBL' },
        { 'express_name': '国通快递', 'express_code': 'GTO' },
        { 'express_name': 'EWE', 'express_code': 'EWE' },
        { 'express_name': '中联速递', 'express_code': 'auvanda' },
        { 'express_name': '西翼物流', 'express_code': 'westwing' },
        { 'express_name': '货运皇物流', 'express_code': 'HYH' },
        { 'express_name': '洋包裹', 'express_code': 'YBG' },
        { 'express_name': '全一快递', 'express_code': 'UAPEX' },
        { 'express_name': '方舟国际速递', 'express_code': 'arkexpress' },
        { 'express_name': '澳世速递', 'express_code': 'ZY_AUSE' },
        { 'express_name': '转运四方', 'express_code': 'zhuanyunsifang' },
        { 'express_name': '澳德快递', 'express_code': 'auodexpress' },
        { 'express_name': '蓝天速递', 'express_code': 'blueskyexpress' },
        { 'express_name': 'AOL（澳通）', 'express_code': 'AOL' },
        { 'express_name': 'EASY国际速递', 'express_code': 'easyexpress' },
        { 'express_name': '易境达', 'express_code': 'YJD' },
        { 'express_name': '易境达国际物流', 'express_code': 'uscbexpress' },
        { 'express_name': '递四方', 'express_code': 'disifang' },
        { 'express_name': '三象速递', 'express_code': 'sxexpress' },
        { 'express_name': '澳邦国际物流', 'express_code': 'ausbondexpress' },
        { 'express_name': '急递速递', 'express_code': 'jdexpress' },
        { 'express_name': 'UEQ', 'express_code': 'Express', 'undefined': 'UEQ' },
        { 'express_name': '美西转运', 'express_code': 'ZY_MXZY' },
        { 'express_name': '斑马物流', 'express_code': 'ZY_BM' },
        { 'express_name': '优邦速运', 'express_code': 'ubonex' },
        { 'express_name': '中驰物流', 'express_code': 'ZH' },
        { 'express_name': '澳邮中国快运', 'express_code': 'auexpress' },
        { 'express_name': '驿扬国际速运', 'express_code': 'iyoungspeed' },
        { 'express_name': '泰兴国际物流', 'express_code': 'taixing' },
        { 'express_name': 'TST速运通', 'express_code': 'tstexp' },
        { 'express_name': '豪杰快递', 'express_code': 'hjusaexpress' },
        { 'express_name': '极地快递', 'express_code': 'polarexpress' },
        { 'express_name': '京东快递', 'express_code': 'JD' },
        { 'express_name': '增速海淘', 'express_code': 'ZYZOOM' },
        { 'express_name': '百世快运', 'express_code': 'BTWL' },
        { 'express_name': '易达通', 'express_code': 'YDT' },
        { 'express_name': '长江国际速递', 'express_code': 'changjiang' },
        { 'express_name': '新元快递', 'express_code': 'xingyuan' },
        { 'express_name': '跨境直邮通', 'express_code': 'kjde' },
        { 'express_name': '淘布斯国际物流', 'express_code': 'taoplus' },
        { 'express_name': '增速跨境-E特快', 'express_code': 'zyzoom' },
        { 'express_name': '速尔快递', 'express_code': 'SURE' },
        { 'express_name': '卓志速运', 'express_code': 'chinaicip' },
        { 'express_name': '泛捷快递', 'express_code': 'PANEX' },
        { 'express_name': '陆本速递', 'express_code': 'luben' },
        { 'express_name': '澳新物流', 'express_code': 'axexpress' },
        { 'express_name': '安达速递', 'express_code': 'adapost' },
        { 'express_name': '跨洋国际速递', 'express_code': 'koyoex' },
        { 'express_name': '极光转运', 'express_code': 'jlight' },
        { 'express_name': '贝海国际', 'express_code': 'xlobo' },
        { 'express_name': '三盛快递', 'express_code': 'sansheng' },
        { 'express_name': 'COE（东方快递）', 'express_code': 'coe' },
        { 'express_name': '飞翔快递', 'express_code': 'flyingparcel' },
        { 'express_name': '亨洋速递', 'express_code': 'greatoceanexpress' },
        { 'express_name': '优安达', 'express_code': 'uadexpress' },
        { 'express_name': '可可树美中运输', 'express_code': 'excocotree' },
        { 'express_name': '澳洲飞跃物流', 'express_code': 'rlgexpress' },
        { 'express_name': '秦远物流', 'express_code': 'chinz' },
        { 'express_name': '光线物流', 'express_code': 'gxwl' },
        { 'express_name': '华夏物流', 'express_code': 'huaxia' },
        { 'express_name': '華信物流', 'express_code': 'logistics' },
        { 'express_name': '欧亚专线', 'express_code': 'euasia' },
        { 'express_name': '速通快运', 'express_code': 'sotoex' },
        { 'express_name': '万庚', 'express_code': 'vangenexpress' },
        { 'express_name': '宅急送', 'express_code': 'zjs' },
        { 'express_name': '安世通快递', 'express_code': 'astexpress' },
        { 'express_name': '澳洲迈速', 'express_code': 'maxeedexpress' },
        { 'express_name': '迅达速递', 'express_code': 'xdexpress' },
        { 'express_name': '速腾物流', 'express_code': 'suteng' },
        { 'express_name': '明达国际速递', 'express_code': 'tmwexpress' },
        { 'express_name': '速派快递', 'express_code': 'fastgoexpress' },
        { 'express_name': '富腾达快递', 'express_code': 'ftdlogistics' },
        { 'express_name': 'sign国际快递', 'express_code': 'signedexpress' },
        { 'express_name': 'EFS', 'express_code': 'efs' },
        { 'express_name': '明通国际速递', 'express_code': 'tnjex' },
        { 'express_name': '鼎润物流', 'express_code': 'DRL' },
        { 'express_name': 'e直运', 'express_code': 'edtexpress' },
        { 'express_name': '威盛快递', 'express_code': 'wherexpess' },
        { 'express_name': '澳远国际直邮', 'express_code': 'aoyuan' },
        { 'express_name': '澳联快递', 'express_code': 'auslink' },
        { 'express_name': '邮邦国际', 'express_code': 'youban' },
        { 'express_name': '英超物流', 'express_code': 'yingchao' },
        { 'express_name': '九曳快递', 'express_code': 'jiuye' },
        { 'express_name': '壹米滴答', 'express_code': 'YMDD' },
        { 'express_name': '丹鸟', 'express_code': 'DNWL' },
        { 'express_name': '一速递', 'express_code': 'oneexpress' },
        { 'express_name': '华运物流', 'express_code': 'huayun' },
        { 'express_name': '锋鸟物流', 'express_code': 'beebird' },
        { 'express_name': '平安达腾飞', 'express_code': 'PADTF' },
        { 'express_name': '安能物流', 'express_code': 'ANE' },
        { 'express_name': 'E通速递', 'express_code': 'etong' },
        { 'express_name': 'CGO速递', 'express_code': 'cgo' },
        { 'express_name': '飞达速递', 'express_code': 'feida' },
        { 'express_name': '信丰快递', 'express_code': 'xinfengwuliu' },
        { 'express_name': '木森物流', 'express_code': 'musen' },
        { 'express_name': '凯峰通达物流', 'express_code': 'kft' },
        { 'express_name': '极兔速递', 'express_code': 'JTSD' },
        { 'express_name': '苏宁物流', 'express_code': 'suning' },
        { 'express_name': '联邦转运', 'express_code': 'fedroad' },
        { 'express_name': '中通快运', 'express_code': 'ZTOKY' },
        { 'express_name': '国际邮政包裹', 'express_code': 'GJYZ' },
        { 'express_name': '容昌物流', 'express_code': 'rcwl' },
        { 'express_name': '速优国际快递', 'express_code': 'suyoukd' },
        { 'express_name': '众邮快递', 'express_code': 'zhongyouex' },
        { 'express_name': '速递中国', 'express_code': 'sendtochina' },
        { 'express_name': '合心速递', 'express_code': 'hexin' },
        { 'express_name': '跨越速运', 'express_code': 'KYSY' },
        { 'express_name': '顺心捷达', 'express_code': 'SX' },
        { 'express_name': '韵达快运', 'express_code': 'YDKY' },
        { 'express_name': '中翼国际物流', 'express_code': 'chnexp' },
        { 'express_name': '帮帮发转运', 'express_code': 'BBFZY' },
        { 'express_name': '佐达特快', 'express_code': 'zuodatekuai' },
        { 'express_name': '365国际快递', 'express_code': '365guoji' },
        { 'express_name': '丰网速运', 'express_code': 'FWX' },
        { 'express_name': '九曳鲜配', 'express_code': 'JY' },
        { 'express_name': '天天欧洲物流', 'express_code': 'ttkeurope' },
        { 'express_name': '龙飞祥快递', 'express_code': 'longfx' },
        { 'express_name': '奥捷快递', 'express_code': 'aj' },
        { 'express_name': 'CJ대한통운', 'express_code': 'cj' },
        { 'express_name': '乐天快递', 'express_code': 'lt' },
        { 'express_name': '安得物流', 'express_code': 'ANNTO' },
        { 'express_name': '诺德物流', 'express_code': 'nd' },
        { 'express_name': '速必达物流', 'express_code': 'SUBIDA' },
        { 'express_name': '新杰物流', 'express_code': 'sunjex' },
        { 'express_name': '中通国际', 'express_code': 'zhongtongguoji' },
        { 'express_name': '蓝盾金皇内蒙专线', 'express_code': 'ld' },
        { 'express_name': '加运美', 'express_code': 'JYM' },
        { 'express_name': '롯데택배', 'express_code': 'lo' },
        { 'express_name': '中远快运', 'express_code': 'ZY100' }
      ],
      express: {},
      btnClickLoading: false,
      callback: true,
      orderStatusOptions: [
        {
          label: '状态',
          options: [
            { 'value': -2, 'value1': '待付款', 'label': '待付款', disabled: true },
            { 'value': 0, 'value1': '待发货', 'label': '待发货' },
            { 'value': 3, 'value1': '海关审核中 | 仓库分拣打包', 'label': '海关审核中 | 仓库分拣打包' },
            { 'value': 1, 'value1': '已发货', 'label': '已发货' },
            { 'value': 2, 'value1': '已收货', 'label': '已收货' },
            { 'value': 5, 'value1': '已完成', 'label': '已完成' }
          ]
        },
        {
          label: '内部标记状态',
          options: [
            { 'value': -1, 'value1': '已取消', 'label': '已取消' },
            { 'value': 501, 'value1': '退货退款', 'label': '退货退款' }
          ]
        }
      ],
      rules: {
        push_status: [
          { required: true, message: '请选择订单状态', trigger: 'blur' }
        ],
        express_name: [
          { required: true, message: '请选择快递名称', trigger: 'blur' }
        ],
        express_no: [
          { required: true, message: '请输入快递单号', trigger: 'blur' }
        ]
      }
    }
  },
  computed: {
    showBySelectStatus() {
      if (this.form.push_status == '已取消') {
        return false
      }
      if (this.form.push_status == '退货退款') {
        return false
      }

      return true
    }
  },
  watch: {
    show(val) {
      if (val) {
        console.log(this.form)
      }
    }
  },
  created() {
  },
  methods: {
    async updateOrderStatus() {
      const that = this

      const valid = await this.$refs['formRef'].validate()
      if (!valid) {
        this.$message('错误')
        return
      }

      const _data = {
        id: this.form.id,
        callback: this.callback,
        push_status: this.form.push_status
      }
      if (_data.push_status === '已发货') {
        _data.express_no = this.form.express_no
        _data.express_name = this.form.express_name
        const _express_result = this.express_options.find(item => item.express_name === _data.express_name)
        _data.express_code = _express_result.express_code
      }

      modifyOrder(_data).then(response => {
        console.log(response)
        if (response.code === 10000) {
          that.$message.success(response.message)
        } else {
          that.$message.error(response.message)
        }
        this.close()
        this.$emit('update:show', false)
        that.$parent.getList()
      })
    },
    close() {
      this.$emit('update:updateOrderStatusDialog', false)
    }
  }
}
</script>
